User-Defined Type Guards
is Typeで型ガードができる
自作型でTypeGuardする
isを使って自作TypeGuradなるものを作る ref 以下のような関数を定義する
返り値の型はbooleanを定義する
実際のこの関数の返り値の型は書いている通りp is Hanakoになる
引数pがHanako型の場合trueを返す
code:ts
type Person = {
name: string;
age: number;
};
type Hanako = { name: 'hanako'; age: 21 };
type Tarou = { name: 'tarou'; age: 32 };
const isHanako = (p: Person): p is Hanako => p.name === 'hanako';
const f = (p: Person) => {
if (isHanako(p)) {
// 花子に対する処理
// pの型はHanako
} else {
// 他のPersonに対する処理
}
};
isは実装によらず、その型になるので注意
安全に